1. Technical Field
The present invention is directed to an apparatus and method of flexible web service deployment. More specifically, the present invention is directed to an apparatus and method for deploying a web service using a web services description language document, a Java bean, or both.
2. Description of Related Art
In service-oriented architectures, the fundamental premise is the reuse of web services across one or more enterprise applications. Web services are services that are offered across the Internet that are built using standard technologies that allow interoperability between systems and applications. Web services are typically invoked by enterprise applications to perform some extended functionality not otherwise available in the enterprise application itself. The enterprise applications and their associated enterprise systems are often referred to as “clients” of the web services that they invoke.
Web services are described using a standard language called the Web Services Description Language (WSDL). Co-developed by Microsoft and IBM, WSDL describes the protocols and data types used by the web service. WSDL descriptions can be referenced in a Universal Description, Discovery and Integration (UDDI) registry in order to promote the use of Web services worldwide. Typically, a web service provider publishes information about its web service in a UDDI registry; that information points to the WSDL description of the web service. A client that wants to use the web service obtains the WSDL from a UDDI registry or perhaps other sources. Using the information in the WSDL document, the client can access the web service.
Both the web service provider and the web service client require a “web services infrastructure.” The provider infrastructure must know about the web services it is to provide. Thus, web services must be “deployed” in such provider infrastructures. There are several examples of provider infrastructures including Apache SOAP, Apache Axis, or the IBM Web Services Gateway. These infrastructures differ in the requirements for deploying web services, however. Apache infrastructures support deployment simply by naming the “local” implementation, i.e., on the same node, (in Java, the class name), because the implementation is always local. The Gateway, however, requires that any implementation be described using WSDL, because the Gateway supports implementations that can be local (for example a Java class) or remote, i.e., a web service running on a different node, such that the Gateway is acting as a proxy or intermediary.
A web service implementation may require complex data types as parameters or return values. For convenience, these data types are implemented as structures, as in the C language, or classes, as in object-oriented languages such as Java. WSDL supports the description of data types of arbitrary complexity. A WSDL description, as an XML document, uses namespace-qualified names (qname) to identify data types and other entities described in the WSDL document. The data type qnames must be used in the SOAP messages that flow between a web service and a client of that web service to identify instances of parameter and return value types.
When a web service provider deploys a web service into its web service infrastructure, such as Apache SOAP, or Apache Axis, the provider must tell the infrastructure how to match the data types in the SOAP message with the actual implementation of the data type used by the web service implementation. Similarly, a web service client that wishes to use implementations of data types must also tell its infrastructure how to match the data types in the SOAP message with the actual implementation of the data type used by the client. This is accomplished in both infrastructures by defining a mapping to the infrastructure. The mapping relates a qname to a structure or class name. The actual data type implementations may or may not be the same, and typically they will not be the same.
Since the data type qname information in the WSDL document used by the client is generated by the provider of the web service, there is a guaranteed match. That is, the client must include the namespace information for data types from the WSDL document produced by the web service provider in the messages it sends to the web service, so that the web service provider understands how to match the data.
Thus, some known systems require that all web services, either remote or local, be described using WSDL. Other known systems allow local services to be described using only a name of the implementing class, i.e. described as JavaBeans. There is no known system that facilitates the use of both WSDL document descriptions for remote and local web services and/or local description of web services as JavaBeans.